﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using SistemaPetShop;

namespace SistemaPetShop.Negocio
{
    public class Produto
    {

        StringBuilder query = new StringBuilder();
        Conexao con = new Conexao();
        BaseClass basseClass = new BaseClass();


        public bool InserirProduto(String nome, String descricao,String valor,Int32 fornecedor)
        {
            try 
	        {	       
            con.AbrirConexao();
            query.Append("INSERT INTO PRODUTO (dataCadastro,nome,descricao,valor,Fornecedor_idFornecedor) VALUES ( '");
            query.Append(DateTime.Now.ToString("yyyy/MM/dd HH:mm"));
            query.Append("','");
            query.Append(nome.ToUpper());
            query.Append("','");
            query.Append(descricao.ToUpper());
            query.Append("','");
            query.Append(basseClass._FormataValorInsereBanco(valor));
            query.Append("',");
            query.Append(fornecedor);
            query.Append(");");
            bool retorno = con.Insert(query.ToString());
            con.FecharConexao();
            query.Remove(0, query.Length);
            if (retorno)
            {
                return true;
            }
            else
	        {
                return false;
	        }
		
	        }
	        catch (Exception)
	        {
		
		    throw;
	        }
       
        }


        public bool _AtualizarProduto(Int32 idProduto,String nome, String descricao,String valor,Int32 fornecedor)
        {
            try 
	        {	       
                con.AbrirConexao();
                query.Append("Update PRODUTO set nome = '");
                query.Append(nome.ToUpper());
                query.Append("',descricao = '");
                query.Append(descricao.ToUpper());
                query.Append("', valor = '");
                query.Append(basseClass._FormataValorInsereBanco(valor));
                query.Append("',Fornecedor_idFornecedor = '");
                query.Append(fornecedor);
                query.Append("' ");
                query.Append(" where idProduto = ");
                query.Append(idProduto.ToString());
                bool retorno = con.Insert(query.ToString());
                con.FecharConexao();
                query.Remove(0, query.Length);
                if (retorno)
                {
                    return true;
                }
                else
	            {
                    return false;
	            }
		
	        }
	            catch (Exception)
	            {
		
		        throw;
	            }
       
        }

        public DataTable _ListaProduto(Int32 idProduto)
        {
            try
            {
                DataTable dt = new DataTable();
                con.AbrirConexao();
                query.Append(" select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro,b.idFornecedor from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor where idProduto = ");
                query.Append(idProduto.ToString());
                dt.Load(con.Consulta(query.ToString()));
                query.Remove(0, query.Length);
                con.FecharConexao();
                return dt;

            }
            catch (Exception)
            {
                
                throw;
            }
        }

        public String _RetornaValorProduto(Int32 idProduto)
        {
            try
            {
                
                con.AbrirConexao();
                query.Append(" select a.valor from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor where idProduto = ");
                query.Append(idProduto.ToString());
                String valor = con._ConsultaString(query.ToString()).ToString();
                query.Remove(0, query.Length);
                con.FecharConexao();
                
                return basseClass._ApresentaValorMonetario(valor);

            }
            catch (Exception)
            {

                throw;
            }
        }




        public DataTable _ListaProduto()
        {
            try
            {
                DataTable dt = new DataTable();
                con.AbrirConexao();
                query.Append(" select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor ");
                dt.Load(con.Consulta(query.ToString()));
                query.Remove(0, query.Length);
                con.FecharConexao();
                return dt;

            }
            catch (Exception)
            {

                throw;
            }
        }

        public DataTable _ListaProduto(string conteudo, string tipoPesquisa)
        {
            DataTable dt = new DataTable();
            Conexao c = new Conexao();
            c.AbrirConexao();

            switch (tipoPesquisa)
            {

                case "Nome do Produto":
                    dt.Load(c.Consulta("select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor where a.nome like '%" + conteudo + "%'"));
                    break;
                case "Razão Social do Fornecedor":
                    dt.Load(c.Consulta("select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor where b.razaoSocial like '%" + conteudo + "%'"));
                    break;
                case "Descrição":
                    dt.Load(c.Consulta("select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor where a.descricao like '%" + conteudo + "%'"));
                    break;
                case "Valor":
                    dt.Load(c.Consulta("select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor where a.valor = " + basseClass._FormataValorInsereBanco(conteudo) ));
                    break;
                default:
                    dt.Load(c.Consulta("select a.idProduto,a.nome,a.descricao,a.valor,b.razaoSocial,a.dataCadastro from Produto a join Fornecedor b on a.Fornecedor_idFornecedor = b.idFornecedor "));
                    break;
            }

            c.FecharConexao();
            return dt;
        }






        public bool _ApagaProduto(Int32 idProduto)
        {
            try
            {
                con.AbrirConexao();
                bool ret = con.Insert("DELETE FROM PRODUTO WHERE idProduto = " + idProduto.ToString());
                con.FecharConexao();
                return ret;
            }
            catch (Exception)
            {
                
                throw;
            }

        }





    }
}
